import type { FormSchemaGetter } from '#/adapter/form';
import type { VxeGridProps } from '#/adapter/vxe-table';

import { ref } from 'vue';

import { gzhUsers } from '#/api/gzh/gzhUser';
import { getDictOptions } from '#/utils/dict';
import { renderDict } from '#/utils/render';

export const userOptions = ref<{ label: string; value: number | string }[]>([]);

export async function getGZHUsersOptions() {
  const userVOS = await gzhUsers();
  console.log('userVOS', userVOS);
  return userVOS
    .filter((item) => item.userName !== null && item.id !== null)
    .map((item) => ({
      label: item.userName,
      value: item.gzhId,
    }));
}

function renderGZHUsers(userName: string): string {
  const user = userOptions.value.find((item) => item.value === userName);
  return user?.label || '未知用户'; // 提供默认值，避免返回 undefined
}
export const querySchema: FormSchemaGetter = () => [
  {
    component: 'Select',
    componentProps: {
      options: userOptions,
    },
    fieldName: 'userName',
    label: '所属用户',
  },
  {
    component: 'Input',
    fieldName: 'title',
    label: '文章标题',
  },
  // {
  //   component: 'Input',
  //   fieldName: 'coverUrl',
  //   label: '封面url',
  // },
  // {
  //   component: 'Textarea',
  //   fieldName: 'contentHtml',
  //   label: '内容url',
  // },
  // {
  //   component: 'Textarea',
  //   fieldName: 'summary',
  //   label: '摘要',
  // },
  {
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ARTICLE_ORIGINAL 便于维护
      options: getDictOptions('bwf_gzh_article_original'),
    },
    fieldName: 'isOriginal',
    label: '原创',
  },
  // {
  //   component: 'Input',
  //   fieldName: 'author',
  //   label: '作者',
  // },
  // {
  //   component: 'Input',
  //   fieldName: 'whitelist',
  //   label: '白名单',
  // },
  {
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
      options: getDictOptions('bwf_gzh_on_off'),
    },
    fieldName: 'quickRepost',
    label: '快捷转载',
  },
  {
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
      options: getDictOptions('bwf_gzh_on_off'),
    },
    fieldName: 'enableRewards',
    label: '赞赏',
  },
  // {
  //   component: 'Input',
  //   fieldName: 'rewardAccount',
  //   label: '赞赏账户',
  // },
  // {
  //   component: 'Input',
  //   fieldName: 'rewardAutoReply',
  //   label: '赞赏自动回复',
  // },
  {
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
      options: getDictOptions('bwf_gzh_on_off'),
    },
    fieldName: 'comments',
    label: '留言',
  },
  // {
  //   component: 'Select',
  //   componentProps: {
  //     // 可选从DictEnum中获取 DictEnum.BWF_GZH_PERMISSION 便于维护
  //     options: getDictOptions('bwf_gzh_permission'),
  //   },
  //   fieldName: 'commentPermission',
  //   label: '谁可以留言',
  // },
  // {
  //   component: 'Input',
  //   fieldName: 'autoSelectComments',
  //   label: '自动精选留言',
  // },
  {
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_PERMISSION 便于维护
      options: getDictOptions('bwf_gzh_permission'),
    },
    fieldName: 'replyPermission',
    label: '谁可以回复',
  },
  // {
  //   component: 'Input',
  //   fieldName: 'autoSelectReplies',
  //   label: '自动精选回复',
  // },
  // {
  //   component: 'Input',
  //   fieldName: 'collection',
  //   label: '合集',
  // },
  // {
  //   component: 'Input',
  //   fieldName: 'originalLink',
  //   label: '原文链接',
  // },
  {
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ARTICLE_SOURCE 便于维护
      options: getDictOptions('bwf_gzh_article_source'),
    },
    fieldName: 'creationSource',
    label: '创作来源',
  },
  {
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
      options: getDictOptions('bwf_gzh_on_off'),
    },
    fieldName: 'platformRecommend',
    label: '平台推荐',
  },
  {
    component: 'DatePicker',
    componentProps: {
      showTime: true,
      format: 'YYYY-MM-DD HH:mm:ss',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
    },
    fieldName: 'publishTime',
    label: '发表时间',
  },
  {
    component: 'RadioGroup',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_RELEASE_STATUS 便于维护
      options: getDictOptions('bwf_gzh_release_status'),
      buttonStyle: 'solid',
      optionType: 'button',
    },
    fieldName: 'releaseStatus',
    label: '发布状态 ',
  },
];

export const columns: VxeGridProps['columns'] = [
  { type: 'checkbox', width: 60 },
  {
    title: '主键id',
    field: 'id',
  },
  {
    title: '所属用户',
    field: 'userName',
    slots: {
      default: ({ row }) => {
        return renderGZHUsers(row.userName);
      },
    },
  },
  {
    title: '文章标题',
    field: 'title',
  },
  {
    title: '封面url',
    field: 'coverUrl',
  },
  {
    title: '内容url',
    field: 'contentHtml',
  },
  {
    title: '摘要',
    field: 'summary',
  },
  {
    title: '原创',
    field: 'isOriginal',
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.BWF_GZH_ARTICLE_ORIGINAL 便于维护
        return renderDict(row.isOriginal, 'bwf_gzh_article_original');
      },
    },
  },
  // {
  //   title: '作者',
  //   field: 'author',
  // },
  // {
  //   title: '白名单',
  //   field: 'whitelist',
  // },
  {
    title: '快捷转载',
    field: 'quickRepost',
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
        return renderDict(row.quickRepost, 'bwf_gzh_on_off');
      },
    },
  },
  {
    title: '赞赏',
    field: 'enableRewards',
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
        return renderDict(row.enableRewards, 'bwf_gzh_on_off');
      },
    },
  },
  // {
  //   title: '赞赏账户',
  //   field: 'rewardAccount',
  // },
  // {
  //   title: '赞赏自动回复',
  //   field: 'rewardAutoReply',
  // },
  {
    title: '留言',
    field: 'comments',
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
        return renderDict(row.comments, 'bwf_gzh_on_off');
      },
    },
  },
  // {
  //   title: '谁可以留言',
  //   field: 'commentPermission',
  //   slots: {
  //     default: ({ row }) => {
  //       // 可选从DictEnum中获取 DictEnum.BWF_GZH_PERMISSION 便于维护
  //       return renderDict(row.commentPermission, 'bwf_gzh_permission');
  //     },
  //   },
  // },
  // {
  //   title: '自动精选留言',
  //   field: 'autoSelectComments',
  // },
  {
    title: '谁可以回复',
    field: 'replyPermission',
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.BWF_GZH_PERMISSION 便于维护
        return renderDict(row.replyPermission, 'bwf_gzh_permission');
      },
    },
  },
  // {
  //   title: '自动精选回复',
  //   field: 'autoSelectReplies',
  // },
  // {
  //   title: '合集',
  //   field: 'collection',
  // },
  // {
  //   title: '原文链接',
  //   field: 'originalLink',
  // },
  {
    title: '创作来源',
    field: 'creationSource',
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.BWF_GZH_ARTICLE_SOURCE 便于维护
        return renderDict(row.creationSource, 'bwf_gzh_article_source');
      },
    },
  },
  {
    title: '平台推荐',
    field: 'platformRecommend',
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
        return renderDict(row.platformRecommend, 'bwf_gzh_on_off');
      },
    },
  },
  {
    title: '发表时间',
    field: 'publishTime',
  },
  {
    title: '发布状态 ',
    field: 'releaseStatus',
    slots: {
      default: ({ row }) => {
        // 可选从DictEnum中获取 DictEnum.BWF_GZH_RELEASE_STATUS 便于维护
        return renderDict(row.releaseStatus, 'bwf_gzh_release_status');
      },
    },
  },
  {
    title: '备注',
    field: 'remark',
  },
  {
    field: 'action',
    fixed: 'right',
    slots: { default: 'action' },
    title: '操作',
    width: 180,
  },
];

export const drawerSchema: FormSchemaGetter = () => [
  {
    label: '主键id',
    fieldName: 'id',
    component: 'Input',
    dependencies: {
      show: () => false,
      triggerFields: [''],
    },
  },
  {
    label: '所属用户',
    fieldName: 'userName',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ARTICLE_ORIGINAL 便于维护
      options: userOptions,
    },
    rules: 'required',
  },
  {
    label: '文章标题',
    fieldName: 'title',
    component: 'Input',
    rules: 'required',
  },
  {
    label: '封面url',
    fieldName: 'coverUrl',
    component: 'Input',
    rules: 'required',
  },
  {
    label: '内容url',
    fieldName: 'contentHtml',
    component: 'Textarea',
    rules: 'required',
  },
  {
    label: '摘要',
    fieldName: 'summary',
    component: 'Textarea',
  },
  {
    label: '原创',
    fieldName: 'isOriginal',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ARTICLE_ORIGINAL 便于维护
      options: getDictOptions('bwf_gzh_article_original'),
    },
    rules: 'selectRequired',
  },
  {
    label: '作者',
    fieldName: 'author',
    component: 'Input',
    rules: 'required',
  },
  {
    label: '白名单',
    fieldName: 'whitelist',
    component: 'Input',
  },
  {
    label: '快捷转载',
    fieldName: 'quickRepost',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
      options: getDictOptions('bwf_gzh_on_off'),
    },
    rules: 'selectRequired',
  },
  {
    label: '赞赏',
    fieldName: 'enableRewards',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
      options: getDictOptions('bwf_gzh_on_off'),
    },
    rules: 'selectRequired',
  },
  {
    label: '赞赏账户',
    fieldName: 'rewardAccount',
    component: 'Input',
  },
  {
    label: '赞赏自动回复',
    fieldName: 'rewardAutoReply',
    component: 'Input',
  },
  {
    label: '留言',
    fieldName: 'comments',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
      options: getDictOptions('bwf_gzh_on_off'),
    },
    rules: 'selectRequired',
  },
  {
    label: '谁可以留言',
    fieldName: 'commentPermission',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_PERMISSION 便于维护
      options: getDictOptions('bwf_gzh_permission'),
    },
    rules: 'selectRequired',
  },
  {
    label: '自动精选留言',
    fieldName: 'autoSelectComments',
    component: 'Input',
  },
  {
    label: '谁可以回复',
    fieldName: 'replyPermission',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_PERMISSION 便于维护
      options: getDictOptions('bwf_gzh_permission'),
    },
    rules: 'selectRequired',
  },
  {
    label: '自动精选回复',
    fieldName: 'autoSelectReplies',
    component: 'Input',
  },
  {
    label: '合集',
    fieldName: 'collection',
    component: 'Input',
  },
  {
    label: '原文链接',
    fieldName: 'originalLink',
    component: 'Input',
  },
  {
    label: '创作来源',
    fieldName: 'creationSource',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ARTICLE_SOURCE 便于维护
      options: getDictOptions('bwf_gzh_article_source'),
    },
    rules: 'selectRequired',
  },
  {
    label: '平台推荐',
    fieldName: 'platformRecommend',
    component: 'Select',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_ON_OFF 便于维护
      options: getDictOptions('bwf_gzh_on_off'),
    },
    rules: 'selectRequired',
  },
  {
    label: '发表时间',
    fieldName: 'publishTime',
    component: 'DatePicker',
    componentProps: {
      showTime: true,
      format: 'YYYY-MM-DD HH:mm:ss',
      valueFormat: 'YYYY-MM-DD HH:mm:ss',
    },
    rules: 'required',
  },
  {
    label: '发布状态 ',
    fieldName: 'releaseStatus',
    component: 'RadioGroup',
    componentProps: {
      // 可选从DictEnum中获取 DictEnum.BWF_GZH_RELEASE_STATUS 便于维护
      options: getDictOptions('bwf_gzh_release_status'),
      buttonStyle: 'solid',
      optionType: 'button',
    },
    rules: 'selectRequired',
  },
  {
    label: '备注',
    fieldName: 'remark',
    component: 'Input',
  },
];
